#ifndef MATRIXTRANSFORMATION_H
#define MATRIXTRANSFORMATION_H

#include "defs.h"

class MatrixTransformation {
    //-------------------------------------------------------------//
    //                          ATTRIBUTES                         //
    //-------------------------------------------------------------//

public:

    coord data[4][4];

    //-------------------------------------------------------------//
    //                          METHODS                            //
    //-------------------------------------------------------------//

public:

    MatrixTransformation();

    MatrixTransformation(const MatrixTransformation &m);

    void scale(coord x = 1, coord y = 1, coord z = 1);

    void translation(coord x = 0, coord y = 0, coord z = 0);

    void multiply(coord (&data)[4][4]);

    void rotationX (coord angle);

    void rotationY (coord angle);

    void rotationZ (coord angle);

    const coord *operator [] (unsigned int i) const;

protected:

    void setData(const coord (&data)[4][4]);

};

#endif // MATRIXTRANSFORMATION_H

